next up previous
Next: OpenGL Command Bandwidth Up: Graphics Subsystem Bottlenecks Previous: Graphics Subsystem Bottlenecks

Host vs. Transform vs. Fill Limits

Looking at the general GTXRD graphics pipeline, there are three broad types of graphics performance bottlenecks:

Fill limits
occur in the rasterization stage. Fill limited programs are limited by the rate that pixels in the frame buffer can be updated. Visual simulation applications like flight simulators that draw large, textured polygons are often fill limited. The hardware fill limit is often expressed in millions of pixels per second, and the limit depends on what rasterization modes (like depth buffering) are enabled.

Transform limits
occur in the transformation stage. Transform limited programs are limited by the rate that vertices can be lighted, transformed, and clipped. A molecule visualization program that renders thousands of atoms as finely tessellated spheres is likely to be transform limited. The hardware transform limit is often expressed in thousands of polygons per second, and the limit depends on what transformation modes (like the number of lights) are enabled.

Host limits
occur in the generation and traversal stages. Host limits reflect the maximum rate at which the host computer can generate graphics commands so they can be processed by the graphics subsystem. Some tasks like the finite element analysis of a car crash cannot be done in real-time and are therefore clearly host limited, but even programs designed to be interactive may starve a fast graphics pipe if the program has too much overhead.

Notice that what limits a program's performance depends in large part on the application. Some applications may demand a machine with excellent fill performance; another application may demand a machine with excellent transform performance. A system architect must make compromises based on the machine's intended purpose.

A good technique for determining if a program is fill limited is to resize the window down to a very small size. If the program speeds up, the program is very likely fill limited. Likewise, if resizing the window to the full screen size has no effect on the program's graphics performance, the program is likely to be host or transform limited. Host based profiling tools can help you determine if a program is host limited. A specialized debugger for OpenGL called ogldebug is available to help characterize what operations an OpenGL program stresses.

Other limits that do not cleanly fit into the above categories are also possible. If programs change OpenGL state frequently enough, these mode changes become a bottleneck. Downloading texture maps into the hardware is another potential bottleneck.

Understanding the bottlenecks for a given application on a given system is important for tuning the application. A program that is fill limited may be able to utilize better lighting and finer tessellation without affecting application performance. Likewise, a transform limited program may achieve better performance by limiting the number of polygons transformed by using coarser tessellations.



next up previous
Next: OpenGL Command Bandwidth Up: Graphics Subsystem Bottlenecks Previous: Graphics Subsystem Bottlenecks



mjk@sgi.com